package org.jeecg.modules.hbjh.jsvo;


import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 单据推送对象 swgx_xx_djts_dj
 *
 * @author xiejun
 * @date 2021-10-20
 */

@Data
public class JsXxDjtsDj implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 部门代码
     */

    private String bmdm;

    /**
     * 作废发票代码
     */
    private String fpdm;
    /**
     * 作废发票号码
     */
    private String fphm;
    /**
     * 原发票代码
     */
    private String yfpdm;
    /**
     * 原发票号码
     */
    private String yfphm;

    /**
     * 原全电发票号码
     */
    private String yqdfphm;


    /**
     * 公司代码
     */

    @NotBlank(message = "公司代码不能为空")
    private String gsdm;

    /**
     * 数据类型
     */
    @NotBlank(message = "数据类型不能为空")
    private String sjlx;

    /**
     * 数据来源
     */
    @NotBlank(message = "数据来源不能为空")
    private String sjly;

    /**
     * 处理方式 通信工程局项目传成 2 了
     * 处理方式不能为空 的检验去掉(上海sass api版本太早，客户传的是空字符串)
     */
    //@NotBlank(message = "处理方式不能为空")
    private String clfs;

    private String kplx;

    /**
     * 冲红原因代码
     */
    private String chyydm;
    /**
     * 单据编号
     */
    @NotBlank(message = "单据编号不能为空")
    private String djbh;

//
//    /**
//     * 原单据编号
//     */
//    private String ydjbh;

    /**
     * 客户代码
     */
    private String khdm;

    /**
     * 客户名称
     */

    private String khmc;

    /**
     * 客户税号
     */

    private String khsh;

    /**
     * 客户地址电话
     */

    private String khdzdh;

    /**
     * 客户银行账号
     */

    private String khyhzh;

    /**
     * 发票类型代码
     */
    @NotBlank(message = "发票类型代码不能为空")
    private String fplxdm;

    /**
     * 特殊票种
     */
    @NotBlank(message = "特殊票种不能为空")
    private String tspz;

    /**
     * 客户联系方式
     */

    private String khlxfs;

    /**
     * 销方税号
     */
    private String xfsh;

    /**
     * 单据日期
     */
    @NotBlank(message = "单据日期不能为空")
    private String djrq;

    /**
     * 备注
     */
    private String bz;

    /**
     * 含税标志
     */
    @NotBlank(message = "含税标志不能为空")
    private String hsbz;

    /**
     * 金额
     */
    @NotBlank(message = "金额不能为空")
    private BigDecimal je;

    /**
     * 税率
     */
    private BigDecimal tax;

    /**
     * 折扣金额
     */
    private BigDecimal zkje;

    /**
     * 自动开票标志
     */
    private String zdkpbz;

    /**
     * 自动开票状态
     */
    private String zdkpzt;

    /**
     * 自动开票失败原因
     */
    private String zdkpSbyy;

    /**
     * 开票人
     */

    private String kpr;

    /**
     * 审核人
     */

    private String skr;

    /**
     * 复核人
     */

    private String fhr;

    /**
     * 制单人
     */

    private String zdr;

    /**
     * 用户代码
     */

    private String yhdm;

    /**
     * 开票终端代码
     */

    private String kpzddm;

    /**
     * 原单据编号
     */
    private String ydjbh;

    /**
     * 扩展1
     */

    private String kz1;

    /**
     * 扩展2
     */

    private String kz2;

    /**
     * 扩展3
     */

    private String kz3;
    /**
     * 扩展4
     */

    private String kz4;
    /**
     * 扩展5
     */

    private String kz5;
    /**
     * 扩展6
     */

    private String kz6;
    /**
     * 扩展7
     */

    private String kz7;
    /**
     * 扩展8
     */

    private String kz8;
    /**
     * 扩展9
     */

    private String kz9;
    /**
     * 扩展10
     */

    private String kz10;

    /**
     * 传入日期
     */

    private String crrq;

    /**
     * 单据类型
     */
    @NotBlank(message = "单据类型不能为空")
    private String djlx;

    /**
     * 是否运输单据
     */

    private String sfysdj;

    /**
     * 保存失败原因
     */

    private String sbyy;

    /**
     * 自动拆分
     */
    private String zdcf;

    /**
     * 拆分规则 1数量取整 2数量允许为小数
     */
    private String cfgz;


    /**
     * 数量不变，差额折算到单价的拆分方式
     */
    private String cedj;


    /**
     * 拆分逻辑  1.人才大市场拆分逻辑
     */
    private String zdcflj;

    /**
     * 拆分状态
     */
    private String cfzt;

    /**
     * 拆分失败原因
     */
    private String cfSbyy;


    private String tdyslx;

    /**
     * 真实销货单位识别号
     * 说明：开具类型为3时不能为空
     */
    private String zsxhdwsbh;
    /**
     * 真实销货单位名称
     * 说明：开具类型为3时不能为空
     */
    private String zsxhdwmc;

    /**
     * 扣除额
     */
    private BigDecimal kce;

    /**
     * 征税方式 0-普通征税(默认)  1-减按计征   2-差额征税
     */
    private String zsfs;


    @TableField(exist = false)
    @NotNull(message = "明细信息不能为空")
    private List<JsXxDjtsMx> mxxx;

    //货物运输服务明细
    private String hwysfwmx;

    //建筑服务
    private String jzfw;

    //不动产销售服务
    private String bdcxsfw;

    //不动产经营租赁服务
    private String bdcjyzlfw;

    //旅客运输服务明细
    private String lkysfwmx;

    /**
     * 特定行业
     */
    @TableField(exist = false)
    private JsTdyhVo tdhy;


    /**
     * 小规模纳税理由
     */
    private String sslkjly;


    private String gmfEmail1;


    private String gmfEmail2;

    private String gmfEmail3;

    /**
     * 销方地址电话
     */
    private String xfdzdh;

    /**
     *销方银行账户
     */
    private String xfyhzh;
    /**
     * 购买方手机号
     */
    private String gmfMobile;

    /**
     * 是否展示购买方银行账号 Y 是 N 否
     */
    private String sfzsgmfyhzh;

    /**
     * 是否展示销售方银行账号 Y 是 N 否
     */
    private String sfzsxsfyhzh;

    /**
     * 是否是大额票 Y  是   N 否
     */
    private String sxedDefptxgz;

    /**
     *购买方自然人标识 N:非自然人标识(默认) Y自然人标识 (非必填)
     */
    private String gmfZrrbs;
    /**
     *事业单位,非自然人购方名称少于4个字的传0 (非必填)
     */
    private String spflxConfirm;

    /**
     * 是否纸质票 0 否 1  是
     */
    private String sfwzp;

    /**
     * 扫码开票标志
     */
    private String smkpbz;

    /**
     * 生成二维码标志 1-生成 0或其它值不生成
     */
    @TableField(exist = false)
    private String scewmbz;

    /**
     * 重开标识 0： 否 1：是
     */
    @TableField(exist = false)
    private String ckfp;

    @Override
    public String toString() {
        return "JsXxDjtsDj{" +
                ", bmdm='" + bmdm + '\'' +
                ", fpdm='" + fpdm + '\'' +
                ", fphm='" + fphm + '\'' +
                ", yfpdm='" + yfpdm + '\'' +
                ", yfphm='" + yfphm + '\'' +
                ", yqdfphm='" + yqdfphm + '\'' +
                ", gsdm='" + gsdm + '\'' +
                ", sjlx='" + sjlx + '\'' +
                ", sjly='" + sjly + '\'' +
                ", clfs='" + clfs + '\'' +
                ", kplx='" + kplx + '\'' +
                ", chyydm='" + chyydm + '\'' +
                ", djbh='" + djbh + '\'' +
                ", khdm='" + khdm + '\'' +
                ", khmc='" + khmc + '\'' +
                ", khsh='" + khsh + '\'' +
                ", khdzdh='" + khdzdh + '\'' +
                ", khyhzh='" + khyhzh + '\'' +
                ", fplxdm='" + fplxdm + '\'' +
                ", tspz='" + tspz + '\'' +
                ", khlxfs='" + khlxfs + '\'' +
                ", xfsh='" + xfsh + '\'' +
                ", djrq='" + djrq + '\'' +
                ", bz='" + bz + '\'' +
                ", hsbz='" + hsbz + '\'' +
                ", je='" + je + '\'' +
                ", tax='" + tax + '\'' +
                ", zkje='" + zkje + '\'' +
                ", zdkpbz='" + zdkpbz + '\'' +
                ", zdkpzt='" + zdkpzt + '\'' +
                ", zdkpSbyy='" + zdkpSbyy + '\'' +
                ", kpr='" + kpr + '\'' +
                ", zdr='" + zdr + '\'' +
                ", yhdm='" + yhdm + '\'' +
                ", kpzddm='" + kpzddm + '\'' +
                ", kz1='" + kz1 + '\'' +
                ", kz2='" + kz2 + '\'' +
                ", kz3='" + kz3 + '\'' +
                ", kz4='" + kz4 + '\'' +
                ", kz5='" + kz5 + '\'' +
                ", kz6='" + kz6 + '\'' +
                ", kz7='" + kz7 + '\'' +
                ", kz8='" + kz8 + '\'' +
                ", kz9='" + kz9 + '\'' +
                ", kz10='" + kz10 + '\'' +
                ", crrq='" + crrq + '\'' +
                ", djlx='" + djlx + '\'' +
                ", sfysdj='" + sfysdj + '\'' +
                ", sbyy='" + sbyy + '\'' +
                ", zdcf='" + zdcf + '\'' +
                ", cfgz='" + cfgz + '\'' +
                ", cfzt='" + cfzt + '\'' +
                ", cfSbyy='" + cfSbyy + '\'' +
                ", tdyslx='" + tdyslx + '\'' +
                ", zsxhdwsbh='" + zsxhdwsbh + '\'' +
                ", zsxhdwmc='" + zsxhdwmc + '\'' +
                ", zsfs='" + zsfs + '\'' +
                ", kce='" + kce + '\'' +
                ", gmfZrrbs='" + gmfZrrbs + '\'' +
                ", spflxConfirm='" + spflxConfirm + '\'' +
                ", mxxx=" + mxxx +
                ", ckfp='" + ckfp + '\'' +
                '}';
    }
}

